#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N=2030;
int p[N][N];
int dist[N];
int st[N];
int lcm(int a,int b)
{
	int mul=a*b;
	int r=0;
	while(b)
	{
		r=a%b;
		a=b;
		b=r;
	}
	return mul/a;
}
void dijkstra()
{
	memset(dist,0x3f,sizeof(dist));
	dist[1]=0;
	for(int i=0;i<2021;i++)
	{
		int t=-1;
		for(int j=1;j<=2021;j++)
		{
			if((t==-1 || dist[j]<dist[t]) && st[j]==0)
			{
				t=j;
			}
		}
		st[t]=1;
		for(int j=1;j<=2021;j++)
		{
			dist[j]=min(dist[j],dist[t]+p[t][j]);
		}
	}
	cout<<dist[2021];
}
int main()
{
	memset(p,0x3f,sizeof(p));
	for(int i=1;i<=2021;i++)
	{
		for(int j=i;j<=i+21 && j<=2021;j++)
		{
			int w=lcm(j,i);
			p[i][j]=w;
			p[j][i]=w;
		}
	}
	dijkstra();
	return 0;
}
